package com.haha.community.controller;

import com.haha.community.entity.DiscussPost;
import com.haha.community.entity.Page;
import com.haha.community.entity.User;
import com.haha.community.service.DiscussPostService;
import com.haha.community.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Controller
public class HomeController {
    @Autowired
    private UserService userService;
    @Autowired
    private DiscussPostService discussPostService;
    //进行首页的处理
    @RequestMapping(path = "/index",method = RequestMethod.GET)
    public String getDiscussPost(Model model,@RequestParam(defaultValue = "1",required = false) int currentPage){
        //在方法调用之前，会将model和page进行实例化，并自动将page加入model中，因此不用手动加入
        //从服务器查出总行数放到page中,默认0查询全部
        Page page = new Page();
        page.setCurrentPage(currentPage);
        page.setCount(discussPostService.findDiscussPostRows(0));
        //将访问路径传进去
        page.setPath("/index");

        List<DiscussPost> discussPosts = discussPostService.findDiscussPosts(0, page.getOffset(), page.getLimit());
        //因为还需要用户的名字，这里只有用户的id，需要根据id进行二次查询
        //结果可以新建一个类进行处理，也可以用一个map进行装载，这里使用map
        List<Map<String,Object>> lists = new ArrayList<>();
        if(discussPosts!=null){
            for (DiscussPost discussPost:discussPosts){
                Map<String, Object> map = new HashMap<>();
                //装上讨论相关的数据
                map.put("discussPost",discussPost);
                //装上和id相关的数据
                User user = userService.findUserById(discussPost.getUserId());
                map.put("user",user);
                //将用户的完整信息放到list中
                lists.add(map);
            }
        }
        model.addAttribute("lists",lists);
        model.addAttribute("page",page);
        return "/index";
    }
}
